Many software applications store relevant data as records in a database. The data records typically have certain fields defined by the software application, such as fields for name and address. In many cases there are a large number of predefined fields that could be used, so a common dilemma for software developers is whether to create every possible field or provide flexibility in the form of custom fields, which can be adapted as needed.
A significant drawback to creating a large number of predefined fields is that many of the fields are not commonly used. Display of the fields in a user interface is thus cumbersome and distracting to users, and sometimes obscures the more important fields that are relevant to most users. Because of these problems, some developers create predefined fields for the more important fields, and provide the flexibility of custom fields to store data for fields that are rarely used. However, custom fields are potentially redundant over predefined fields. For example, a user may create a custom field when a suitable predefined field already exists.